package com.donger.common.data.service;

import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;

import java.util.Map;

/**
 * @author 7326
 */
public class Global {

    private static final Map<String, String> props = MapUtil.newHashMap();


    /**
     * 获取配置  从数据库 或者缓存 中
     * 参数表中
     *
     * @param key      参数
     * @param defValue 默认值
     * @return
     */
    public static String getConfig(String key, String defValue) {
        String value;
        return StrUtil.isBlank(value = getConfig(key)) ? defValue : value;
    }

    /**
     * 获取配置
     *
     * @param key 参数
     * @return
     */
    public static String getConfig(String key) {
        String value;
        // 判断内存中是否有该参数
        if ((value = props.get(key)) == null) {
            SysBaseApi sysBaseApi = SpringUtil.getBean(SysBaseApi.class);
            value = sysBaseApi.getConfig(key);
            props.put(key, value);
        }
        return value;
    }


    /**
     * 设置系统缓存
     *
     * @param key   键
     * @param value 值
     */
    public static void setConfig(String key, String value) {
        props.put(key, value);
    }


//    /**
//     * 获取当前登陆人的所有子部门ID
//     * @return 部门ids
//     */
//    public static List<Long> getDeptIds(){
//        Long deptId = SecurityUtils.getUser().getDeptId();
//        ISysDeptService sysDeptService = SpringContextUtil.getBean(ISysDeptService.class);
//        List<Long> collect = sysDeptService.queryDeptNodeList(deptId).stream()
//                .map(SysDept::getDeptId).collect(Collectors.toList());
//        return collect;
//    }
//
//    /**
//     * 根据当前登陆用户的数据权限获取对应的部门
//     * @return
//     */
//    public static List<Long> getDataScope(){
//        List<Long> deptids = new ArrayList<>();
//        Long userid = SecurityUtils.getUser().getId();
//        ISysUserService userService = SpringContextUtil.getBean(ISysUserService.class);
//        SysUser user = userService.getById(userid);
//        SysPostService sysPostService = SpringContextUtil.getBean(SysPostService.class);
//        if(ObjectUtil.isNull(user.getPostId())){
//            deptids.add(user.getDeptId());
//            return deptids;
//        }
//        SysPost post = sysPostService.getById(user.getPostId());
//        // 根据岗位去判断用户的 数据权限
//        //
//        // 全部
//        if(DataScopeTypeEnum.All.getType().equals(post.getDsType())){
//            ISysDeptService sysDeptService = SpringContextUtil.getBean(ISysDeptService.class);
//            return sysDeptService.list().stream().map(SysDept::getDeptId).collect(Collectors.toList());
//        }
//        if(DataScopeTypeEnum.OWN_CHILD_LEVEL.getType().equals(post.getDsType())){
//            return getDeptIds();
//        }
//        if(DataScopeTypeEnum.OWN_LEVEL.getType().equals(post.getDsType())){
//            deptids.add(user.getDeptId());
//            return deptids;
//        }
//        return deptids;
//    }

}
